// 防抖函数
export function debounce(func,delay){
  let timer = null;
  return function(...args){
    if(timer) clearTimeout(timer)
    timer = setTimeout(()=>{
      func.apply(this,args)
    },delay)
  }
}

// 转换时间戳的函数
// 假如date=1535694719 , fmt=‘yyyy-MM-dd’，具体过程1-2-3
export function formatDate(date, fmt) {
  // 获取年份
  // 1.匹配到‘yyyy’
  if (/(y+)/.test(fmt)) {
    // $1：第一组匹配到的数据
    // date.getFullYear() + ''：转换为字符串
    // substr()：截取字符串，从参数开始截取，并返回
    // fmt = ('yyyy-MM-dd').replace('yyyy',('2018').substr(4-4)) = '2018-MM-dd'
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  }
  // 获取
  let o = {
    // ‘M+’：正则表达式，匹配一个或者多个M
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  };
  // 遍历o对象
  for (let k in o) {
    // 遍历到的每个属性就是正则表达式，fmt是用户输入的格式
    // 2.匹配到MM
    if (new RegExp(`(${k})`).test(fmt)) {
      // str = date.getMonth() + 1 + '' = '8'
      let str = o[k] + '';
      // fmt = ('2018-MM-dd').replace('MM',padLeftZero(str)) = '2018-08-dd'
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
    }
    // 3.然后后面其他的继续遍历
  }
  return fmt;
};

// 规范格式04之类的
function padLeftZero (str) {
  return ('00' + str).substr(str.length);
};

